home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.4)
-
- import array
- from struct import *
- from impacket import ImpactPacket
- import dcerpc
- MSRPC_UUID_SVCCTL = '\x81\xbbz6D\x98\xf15\xad2\x98\xf08\x00\x10\x03\x02\x00\x00\x00'
-
- class SVCCTLOpenSCManagerHeader(ImpactPacket.Header):
- OP_NUM = 27
- __SIZE = 32
-
- def __init__(self, aBuffer = None):
- ImpactPacket.Header.__init__(self, SVCCTLOpenSCManagerHeader._SVCCTLOpenSCManagerHeader__SIZE)
- self.set_referent_id(16777215)
- self.set_access_mask(983103)
- if aBuffer:
- self.load_header(aBuffer)
-
-
-
- def get_referent_id(self):
- return self.get_long(0, '<')
-
-
- def set_referent_id(self, id):
- self.set_long(0, id, '<')
-
-
- def get_max_count(self):
- return self.get_long(4, '<')
-
-
- def set_max_count(self, num):
- self.set_long(4, num, '<')
-
-
- def get_offset(self):
- return self.get_long(8, '<')
-
-
- def set_offset(self, num):
- self.set_long(8, num, '<')
-
-
- def get_cur_count(self):
- return self.get_long(12, '<')
-
-
- def set_cur_count(self, num):
- self.set_long(12, num, '<')
-
-
- def get_machine_name(self):
- return self.get_bytes().tostring()[:20]
-
-
- def set_machine_name(self, name):
- if not len(name) <= 8:
- raise AssertionError
- self.set_max_count(len(name) + 1)
- self.set_cur_count(len(name) + 1)
- self.get_bytes()[16:24] = array.array('B', name + (8 - len(name)) * '\x00')
-
-
- def get_access_mask(self):
- return self.get_long(28, '<')
-
-
- def set_access_mask(self, mask):
- self.set_long(28, mask, '<')
-
-
- def get_header_size(self):
- return SVCCTLOpenSCManagerHeader._SVCCTLOpenSCManagerHeader__SIZE
-
-
-
- class SVCCTLRespOpenSCManagerHeader(ImpactPacket.Header):
- __SIZE = 24
-
- def __init__(self, aBuffer = None):
- ImpactPacket.Header.__init__(self, SVCCTLRespOpenSCManagerHeader._SVCCTLRespOpenSCManagerHeader__SIZE)
- if aBuffer:
- self.load_header(aBuffer)
-
-
-
- def get_context_handle(self):
- return self.get_bytes().tolist()[:20]
-
-
- def set_context_handle(self, handle):
- if not 20 == len(handle):
- raise AssertionError
- self.get_bytes()[:20] = array.array('B', handle)
-
-
- def get_return_code(self):
- return self.get_long(20, '<')
-
-
- def set_return_code(self, code):
- self.set_long(20, code, '<')
-
-
- def get_header_size(self):
- return SVCCTLRespOpenSCManagerHeader._SVCCTLRespOpenSCManagerHeader__SIZE
-
-
-
- class SVCCTLOpenServiceHeader(ImpactPacket.Header):
- OP_NUM = 28
- __SIZE = 48
-
- def __init__(self, aBuffer = None):
- ImpactPacket.Header.__init__(self, SVCCTLOpenServiceHeader._SVCCTLOpenServiceHeader__SIZE)
- self.set_max_count(9)
- self.set_cur_count(9)
- self.get_bytes()[40:] = array.array('B', '\x00\x10H`\xff\x01\x0f\x00')
- if aBuffer:
- self.load_header(aBuffer)
-
-
-
- def get_context_handle(self):
- return self.get_bytes().tolist()[:20]
-
-
- def set_context_handle(self, handle):
- if not 20 == len(handle):
- raise AssertionError
- self.get_bytes()[:20] = array.array('B', handle)
-
-
- def get_max_count(self):
- return self.get_long(20, '<')
-
-
- def set_max_count(self, num):
- self.set_long(20, num, '<')
-
-
- def get_offset(self):
- return self.get_long(24, '<')
-
-
- def set_offset(self, num):
- self.set_long(24, num, '<')
-
-
- def get_cur_count(self):
- return self.get_long(28, '<')
-
-
- def set_cur_count(self, num):
- self.set_long(28, num, '<')
-
-
- def get_service_name(self):
- return self.get_bytes().tostring()[32:40]
-
-
- def set_service_name(self, name):
- if not len(name) <= 8:
- raise AssertionError
- self.get_bytes()[32:40] = array.array('B', name + (8 - len(name)) * '\x00')
-
-
- def get_header_size(self):
- return SVCCTLOpenServiceHeader._SVCCTLOpenServiceHeader__SIZE
-
-
-
- class SVCCTLRespOpenServiceHeader(ImpactPacket.Header):
- __SIZE = 24
-
- def __init__(self, aBuffer = None):
- ImpactPacket.Header.__init__(self, SVCCTLRespOpenServiceHeader._SVCCTLRespOpenServiceHeader__SIZE)
- if aBuffer:
- self.load_header(aBuffer)
-
-
-
- def get_context_handle(self):
- return self.get_bytes().tolist()[:20]
-
-
- def set_context_handle(self, handle):
- if not 20 == len(handle):
- raise AssertionError
- self.get_bytes()[:20] = array.array('B', handle)
-
-
- def get_return_code(self):
- return self.get_long(20, '<')
-
-
- def set_return_code(self, code):
- self.set_long(20, code, '<')
-
-
- def get_header_size(self):
- return SVCCTLRespOpenServiceHeader._SVCCTLRespOpenServiceHeader__SIZE
-
-
-
- class SVCCTLCloseServiceHeader(ImpactPacket.Header):
- OP_NUM = 0
- __SIZE = 20
-
- def __init__(self, aBuffer = None):
- ImpactPacket.Header.__init__(self, SVCCTLCloseServiceHeader._SVCCTLCloseServiceHeader__SIZE)
- if aBuffer:
- self.load_header(aBuffer)
-
-
-
- def get_context_handle(self):
- return self.get_bytes().tolist()[:]
-
-
- def set_context_handle(self, handle):
- if not 20 == len(handle):
- raise AssertionError
- self.get_bytes()[:] = array.array('B', handle)
-
-
- def get_header_size(self):
- return SVCCTLCloseServiceHeader._SVCCTLCloseServiceHeader__SIZE
-
-
-
- class SVCCTLRespCloseServiceHeader(ImpactPacket.Header):
- __SIZE = 24
-
- def __init__(self, aBuffer = None):
- ImpactPacket.Header.__init__(self, SVCCTLRespCloseServiceHeader._SVCCTLRespCloseServiceHeader__SIZE)
- if aBuffer:
- self.load_header(aBuffer)
-
-
-
- def get_context_handle(self):
- return self.get_bytes().tolist()[:20]
-
-
- def set_context_handle(self, handle):
- if not 20 == len(handle):
- raise AssertionError
- self.get_bytes()[:20] = array.array('B', handle)
-
-
- def get_return_code(self):
- return self.get_long(20, '<')
-
-
- def set_return_code(self, code):
- self.set_long(20, code, '<')
-
-
- def get_header_size(self):
- return SVCCTLRespCloseServiceHeader._SVCCTLRespCloseServiceHeader__SIZE
-
-
-
- class SVCCTLCreateServiceHeader(ImpactPacket.Header):
- OP_NUM = 24
- __SIZE = 132
-
- def __init__(self, aBuffer = None):
- ImpactPacket.Header.__init__(self, SVCCTLCreateServiceHeader._SVCCTLCreateServiceHeader__SIZE)
- self.set_name_max_count(9)
- self.set_name_cur_count(9)
- self.set_service_flags(272)
- self.set_start_mode(2)
- self.get_bytes()[40:48] = array.array('B', '\x00\x10H`\xe4\xa3@\x00')
- self.get_bytes()[68:76] = array.array('B', '\x00\x00\x00\x00\xff\x01\x0f\x00')
- self.get_bytes()[84:88] = array.array('B', '\x01\x00\x00\x00')
- if aBuffer:
- self.load_header(aBuffer)
-
-
-
- def get_context_handle(self):
- return self.get_bytes().tolist()[:20]
-
-
- def set_context_handle(self, handle):
- if not 20 == len(handle):
- raise AssertionError
- self.get_bytes()[:20] = array.array('B', handle)
-
-
- def get_name_max_count(self):
- return self.get_long(4, '<')
-
-
- def set_name_max_count(self, num):
- self.set_long(20, num, '<')
- self.set_long(48, num, '<')
-
-
- def get_name_offset(self):
- return self.get_long(8, '<')
-
-
- def set_name_offset(self, num):
- self.set_long(24, num, '<')
- self.set_long(52, num, '<')
-
-
- def get_name_cur_count(self):
- return self.get_long(12, '<')
-
-
- def set_name_cur_count(self, num):
- self.set_long(28, num, '<')
- self.set_long(56, num, '<')
-
-
- def get_service_name(self):
- return self.get_bytes().tostring()[32:40]
-
-
- def set_service_name(self, name):
- self.get_bytes()[32:40] = array.array('B', name + (8 - len(name)) * '\x00')
- self.get_bytes()[60:68] = array.array('B', name + (8 - len(name)) * '\x00')
-
-
- def get_service_flags(self):
- return self.get_long(76, '<')
-
-
- def set_service_flags(self, flags):
- self.set_long(76, flags, '<')
-
-
- def get_start_mode(self):
- return self.get_long(80, '<')
-
-
- def set_start_mode(self, mode):
- self.set_long(80, mode, '<')
-
-
- def get_path_max_count(self):
- return self.get_long(88, '<')
-
-
- def set_path_max_count(self, num):
- self.set_long(88, num, '<')
-
-
- def get_path_offset(self):
- return self.get_long(92, '<')
-
-
- def set_path_offset(self, num):
- self.set_long(92, num, '<')
-
-
- def get_path_cur_count(self):
- return self.get_long(96, '<')
-
-
- def set_path_cur_count(self, num):
- self.set_long(96, num, '<')
-
-
- def get_service_path(self):
- return self.get_bytes().tostring()[100:-32]
-
-
- def set_service_path(self, path):
- self.get_bytes()[100:-32] = array.array('B', path)
- self.set_path_max_count(len(path) + 1)
- self.set_path_cur_count(len(path) + 1)
-
-
- def get_header_size(self):
- var_size = len(self.get_bytes()) - SVCCTLCreateServiceHeader._SVCCTLCreateServiceHeader__SIZE
- if not var_size > 0:
- raise AssertionError
- return SVCCTLCreateServiceHeader._SVCCTLCreateServiceHeader__SIZE + var_size
-
-
-
- class SVCCTLRespCreateServiceHeader(ImpactPacket.Header):
- __SIZE = 28
-
- def __init__(self, aBuffer = None):
- ImpactPacket.Header.__init__(self, SVCCTLRespCreateServiceHeader._SVCCTLRespCreateServiceHeader__SIZE)
- if aBuffer:
- self.load_header(aBuffer)
-
-
-
- def get_context_handle(self):
- return self.get_bytes().tolist()[4:24]
-
-
- def set_context_handle(self, handle):
- if not 20 == len(handle):
- raise AssertionError
- self.get_bytes()[4:24] = array.array('B', handle)
-
-
- def get_return_code(self):
- return self.get_long(24, '<')
-
-
- def set_return_code(self, code):
- self.set_long(24, code, '<')
-
-
- def get_header_size(self):
- return SVCCTLRespCreateServiceHeader._SVCCTLRespCreateServiceHeader__SIZE
-
-
-
- class SVCCTLDeleteServiceHeader(ImpactPacket.Header):
- OP_NUM = 2
- __SIZE = 20
-
- def __init__(self, aBuffer = None):
- ImpactPacket.Header.__init__(self, SVCCTLDeleteServiceHeader._SVCCTLDeleteServiceHeader__SIZE)
- if aBuffer:
- self.load_header(aBuffer)
-
-
-
- def get_context_handle(self):
- return self.get_bytes().tolist()[:20]
-
-
- def set_context_handle(self, handle):
- if not 20 == len(handle):
- raise AssertionError
- self.get_bytes()[:20] = array.array('B', handle)
-
-
- def get_header_size(self):
- return SVCCTLDeleteServiceHeader._SVCCTLDeleteServiceHeader__SIZE
-
-
-
- class SVCCTLRespDeleteServiceHeader(dcerpc.MSRPCHeader):
- __SIZE = 4
-
- def __init__(self, aBuffer = None):
- ImpactPacket.Header.__init__(self, SVCCTLRespDeleteServiceHeader._SVCCTLRespDeleteServiceHeader__SIZE)
- if aBuffer:
- self.load_header(aBuffer)
-
-
-
- def get_return_code(self):
- return self.get_long(0, '<')
-
-
- def set_return_code(self, code):
- self.set_long(0, code, '<')
-
-
- def get_header_size(self):
- return SVCCTLRespDeleteServiceHeader._SVCCTLRespDeleteServiceHeader__SIZE
-
-
-
- class SVCCTLStopServiceHeader(ImpactPacket.Header):
- OP_NUM = 1
- __SIZE = 24
-
- def __init__(self, aBuffer = None):
- ImpactPacket.Header.__init__(self, SVCCTLStopServiceHeader._SVCCTLStopServiceHeader__SIZE)
- self.get_bytes()[20:] = array.array('B', '\x01\x00\x00\x00')
- if aBuffer:
- self.load_header(aBuffer)
-
-
-
- def get_context_handle(self):
- return self.get_bytes().tolist()[:20]
-
-
- def set_context_handle(self, handle):
- if not 20 == len(handle):
- raise AssertionError
- self.get_bytes()[:20] = array.array('B', handle)
-
-
- def get_header_size(self):
- return SVCCTLStopServiceHeader._SVCCTLStopServiceHeader__SIZE
-
-
-
- class SVCCTLRespStopServiceHeader(ImpactPacket.Header):
- __SIZE = 32
-
- def __init__(self, aBuffer = None):
- ImpactPacket.Header.__init__(self, SVCCTLRespStopServiceHeader._SVCCTLRespStopServiceHeader__SIZE)
- if aBuffer:
- self.load_header(aBuffer)
-
-
-
- def get_return_code(self):
- return self.get_long(28, '<')
-
-
- def set_return_code(self, code):
- self.set_long(28, code, '<')
-
-
- def get_header_size(self):
- return SVCCTLRespStopServiceHeader._SVCCTLRespStopServiceHeader__SIZE
-
-
-
- class SVCCTLStartServiceHeader(ImpactPacket.Header):
- OP_NUM = 31
- __SIZE = 32
-
- def __init__(self, aBuffer = None):
- ImpactPacket.Header.__init__(self, SVCCTLStartServiceHeader._SVCCTLStartServiceHeader__SIZE)
- if aBuffer:
- self.load_header(aBuffer)
-
-
-
- def get_context_handle(self):
- return self.get_bytes().tolist()[:20]
-
-
- def set_context_handle(self, handle):
- if not 20 == len(handle):
- raise AssertionError
- self.get_bytes()[:20] = array.array('B', handle)
-
-
- def get_arguments(self):
- raise Exception, 'method not implemented'
-
-
- def set_arguments(self, arguments):
- args_data = apply(pack, [
- '<' + 'L' * len(arguments)] + map(id, arguments))
- args_data += reduce((lambda a, b: a + b), map((lambda element: pack('<LLL', len(element) + 1, 0, len(element) + 1) + element + '\x00' + '\x00' * ((4 - (len(element) + 1) % 4) % 4)), arguments), '')
- data = pack('<LLL', len(arguments), id(arguments), len(arguments)) + args_data
- self.get_bytes()[20:] = array.array('B', data)
-
-
- def get_header_size(self):
- var_size = len(self.get_bytes()) - SVCCTLStartServiceHeader._SVCCTLStartServiceHeader__SIZE
- if not var_size > 0:
- raise AssertionError
- return SVCCTLStartServiceHeader._SVCCTLStartServiceHeader__SIZE + var_size
-
-
-
- class SVCCTLRespStartServiceHeader(ImpactPacket.Header):
- __SIZE = 4
-
- def __init__(self, aBuffer = None):
- ImpactPacket.Header.__init__(self, SVCCTLRespStartServiceHeader._SVCCTLRespStartServiceHeader__SIZE)
- if aBuffer:
- self.load_header(aBuffer)
-
-
-
- def get_return_code(self):
- return self.get_long(0, '<')
-
-
- def set_return_code(self, code):
- self.set_long(0, code, '<')
-
-
- def get_header_size(self):
- return SVCCTLRespStartServiceHeader._SVCCTLRespStartServiceHeader__SIZE
-
-
-
- class DCERPCSvcCtl:
-
- def __init__(self, dcerpc):
- self._dcerpc = dcerpc
-
-
- def open_manager(self):
- hostname = 'IMPACT'
- opensc = SVCCTLOpenSCManagerHeader()
- opensc.set_machine_name(hostname)
- self._dcerpc.send(opensc)
- data = self._dcerpc.recv()
- retVal = SVCCTLRespOpenSCManagerHeader(data)
- return retVal
-
-
- def create_service(self, context_handle, service_name, service_path):
- creates = SVCCTLCreateServiceHeader()
- creates.set_context_handle(context_handle)
- creates.set_service_name(service_name)
- creates.set_service_path(service_path)
- self._dcerpc.send(creates)
- data = self._dcerpc.recv()
- retVal = SVCCTLRespCreateServiceHeader(data)
- return retVal
-
-
- def close_handle(self, context_handle):
- closeh = SVCCTLCloseServiceHeader()
- closeh.set_context_handle(context_handle)
- self._dcerpc.send(closeh)
- data = self._dcerpc.recv()
- retVal = SVCCTLRespCloseServiceHeader(data)
- return retVal
-
-
- def delete_service(self, context_handle):
- deletes = SVCCTLDeleteServiceHeader()
- deletes.set_context_handle(context_handle)
- self._dcerpc.send(deletes)
- data = self._dcerpc.recv()
- retVal = SVCCTLRespDeleteServiceHeader(data)
- return retVal
-
-
- def open_service(self, context_handle, service_name):
- opens = SVCCTLOpenServiceHeader()
- opens.set_context_handle(context_handle)
- opens.set_service_name(service_name)
- self._dcerpc.send(opens)
- data = self._dcerpc.recv()
- retVal = SVCCTLRespOpenServiceHeader(data)
- return retVal
-
-
- def stop_service(self, context_handle):
- stops = SVCCTLStopServiceHeader()
- stops.set_context_handle(context_handle)
- self._dcerpc.send(stops)
- data = self._dcerpc.recv()
- retVal = SVCCTLRespStopServiceHeader(data)
- return retVal
-
-
- def start_service(self, context_handle, arguments):
- starts = SVCCTLStartServiceHeader()
- starts.set_arguments(arguments)
- starts.set_context_handle(context_handle)
- self._dcerpc.send(starts)
- data = self._dcerpc.recv()
- retVal = SVCCTLRespStartServiceHeader(data)
- return retVal
-
-
-